import Request from "luch-request";
import { useUserStore } from "../stores/user.js";

import loginto from "@/utils/reder.js";

import { IsLoginfun } from "@/utils/intercept";
import { typefun } from "@/utils/intype.js";
import { code } from "uview-plus/libs/function/test.js";

// #ifdef MP-WEIXIN
// import {
// 	milogin
// } from '@/utils/wxminlogin.js';
// #endif

const tabBarList = ["pages/index/index"];

// 接口白名单
const whiteList = [
  "/member/user/mobile",
  "/login",
  "/member/wechat",
  "/member/wechat/jssdk",
  "/member/refill/list",
  "/member/customer/index",
  "/member/mini",
  "/member/customer/giftDetail",
];

let islogin = "";

// const base_URL = 'https://mmfx.yibaitao.com' //测试环境/
// const base_URL = "https://www.mingsongwang.com"; //测试环境/
const base_URL = import.meta.env.VITE_BASE_URL; // 根目录 .env 文件配置
const base_URL_Ws = import.meta.env.VITE_WS_URL; // 根目录 .env 文件配置
console.log(base_URL_Ws, "base_URL");
// const base_URL = 'https://mmfx.yibaitao.com/api/' //生产环境

// 实例化网络请求模块
const http = new Request({
  // 配置接口的基地址
  baseURL: base_URL,
  sslVerify: false,
});

let loginModal = false;
// 请求拦截器
http.interceptors.request.use(
  function (config) {
    uni.getNetworkType({
      success: function (res) {
        if (res.networkType === "none") {
          uni.showToast({
            title: "网络连接失败,请检查网络!",
            icon: "none",
          });
        }
      },
    });
    // config.header["sdafasdf"] = "11";
    // 显示加载状态提示

    if (config.data && !config.data.offLoading) {
      uni.showLoading({
        title: "正在加载...",
        mask: true,
      });
    } else if (!config.data && config.params && !config.params.offLoading) {
      uni.showLoading({
        title: "正在加载...",
        mask: true,
      });
    }

    // 获取 token
    const userStore = useUserStore();

    if (uni.getStorageSync("X-Auth-Token") && !whiteList.includes(config.url)) {
      config.header["X-Auth-Token"] = uni.getStorageSync("X-Auth-Token");
      // if (import.meta.env.MODE != "development") {
      config.header["Client-Type"] = typefun();
      // }
    } else {
      config.header["X-Auth-Token"] = "";
      // if (import.meta.env.MODE != "development") {
      config.header["Client-Type"] = typefun();
      // }
    }
    islogin = config.url;
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);

// 响应拦截器
http.interceptors.response.use(
  function (data, statusCode) {
    const user = useUserStore();

    // 隐藏加载状态提示
    uni.hideLoading();

    // if (
    //   (data.config &&
    //     !data.config.data &&
    //     data.config.params &&
    //     !data.config.params.offLoading) ||
    //   (data.config && data.config.data && !data.config.data.offLoading)
    // ) {
    //   uni.hideLoading();
    // }

    if (data.data.code !== 200) {
      if (islogin.indexOf("/login") > 0 && data.data.code === 1000) {
        return data.data;
      }
      if (
        data.data.code === 1000 ||
        data.data.code === 4000 ||
        data.data.code === 4001 ||
        data.data.code === 4002 ||
        data.data.code === 401
      ) {
        // #ifdef MP-WEIXIN

        // if (!loginModal) {

        // 	loginModal = true;
        // 	// 弹窗告诉用户去登录
        // 	uni.showModal({
        // 		title: "温馨提示",
        // 		content: "您的授权已失效",
        // 		// showCancel: false,
        // 		confirmText: "去授权",
        // 		cancelText: "再逛会",
        // 		success: (res) => {
        // 			if (res.confirm) {

        // 				uni.removeStorageSync("jwt-token");
        // 				uni.removeStorageSync("userInfo")
        // 				uni.removeStorageSync("is_real")

        // 				uni.switchTab({
        // 					url: "/pages/index/index",
        // 				});
        // 				setTimeout(() => {
        // 					milogin();
        // 				}, 10)

        // 			}
        // 			if (res.cancel && getCurrentPages().length > 1) {
        // 				uni.navigateBack();
        // 			} else {
        // 				if (res.cancel) {
        // 					uni.switchTab({
        // 						url: '/pages/index/index'
        // 					})
        // 				}

        // 			}
        // 			loginModal = false;
        // 		},
        // 	});
        // }

        // #endif
        // 防止重复弹窗
        //h5登录授权页面
        // #ifdef H5
        // var ua = navigator.userAgent.toLowerCase()
        // var isWXWork = ua.match(/wxwork/i) == 'wxwork'
        // var isWeixin = !isWXWork && ua.match(/micromessenger/i) == 'micromessenger'
        // var isMobile = false
        // var isDesktop = false
        // isMobile = true
        // if (navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {
        // 	isMobile = true
        // } else {
        // 	isDesktop = true
        // }
        // if (isWeixin) {

        // 	if (!loginModal) {

        // 		loginModal = true;
        // 		// 弹窗告诉用户去登录
        // 		uni.showModal({
        // 			title: "温馨提示",
        // 			content: "您的授权已失效",
        // 			// showCancel: false,
        // 			confirmText: "去授权",
        // 			cancelText: "再逛会",
        // 			success: (res) => {
        // 				if (res.confirm) {

        // 					uni.removeStorageSync("jwt-token");
        // 					uni.removeStorageSync("userInfo")
        // 					uni.removeStorageSync("is_real")

        // 					uni.switchTab({
        // 						url: "/pages/index/index",
        // 					});
        // 					setTimeout(() => {
        // 						loginto({
        // 							type: 1
        // 						})
        // 					}, 10)

        // 				}
        // 				if (res.cancel && getCurrentPages().length > 1) {
        // 					uni.navigateBack();
        // 				} else {
        // 					if (res.cancel) {
        // 						uni.switchTab({
        // 							url: '/pages/index/index'
        // 						})
        // 					}

        // 				}
        // 				loginModal = false;
        // 			},
        // 		});
        // 	}

        // 	return
        // }

        // #endif

        uni.removeStorageSync("X-Auth-Token");
        let pages = getCurrentPages();
        let currentPage = pages[pages.length - 1];
        let currentRoute = currentPage.route;

        if (
          currentRoute.indexOf("login/login") > 0 ||
          currentRoute.indexOf("goods/order_confirm/index") > 0 ||
          islogin.indexOf("/user/isPayPass") > 0 ||
          islogin.indexOf("/order/product/check") > 0
        ) {
          console.log("当前路由地址：" + currentRoute);
          return data.data;
        }

        if (!loginModal) {
          uni.removeStorageSync("userInfo");
          loginModal = true;
          // 弹窗告诉用户去登录
          uni.showModal({
            title: "温馨提示",
            content: "此时此刻需要您登录喔~",
            // showCancel: false,
            confirmText: "去登录",
            cancelText: "再逛会",
            success: (res) => {
              if (res.confirm) {
                uni.navigateTo({
                  url: "/pages/login/login",
                });
              }
              if (res.cancel && getCurrentPages().length > 1) {
                uni.navigateBack();
              } else {
                if (res.cancel) {
                }
              }
              loginModal = false;
            },
          });
        }
      } else if (data.data.code === 1002) {
        //  接口没有权限
      }

      // uni.showToast({
      //   title: data.data.info,
      //   icon: "none",
      //   duration: 2000,
      // });
      return Promise.reject(data.data || "Error");
    } else {
      // #ifdef MP-WEIXIN
      if (data.header["X-Auth-Token"]) {
        user.token = data.header["X-Auth-Token"];
        uni.setStorageSync("X-Auth-Token", data.header["X-Auth-Token"]);
      }
      // #endif
      // #ifdef H5
      if (data.header["X-Auth-Token"]) {
        user.token = data.header["X-Auth-Token"];
        uni.setStorageSync("X-Auth-Token", data.header["X-Auth-Token"]);
      }
      // #endif
    }
    return data.data;
    // 解构出响应主体
  },
  async function (error) {
    uni.hideLoading();
    if (!error.data) {
      return Promise.reject({ code: 500, msg: "服务器连接失败,请重试" });
    }
    if (
      error.data &&
      error.data.code !== 200 &&
      (error.data.code === 1000 ||
        error.data.code === 4000 ||
        error.data.code === 4001 ||
        error.data.code === 4002 ||
        error.data.code === 4003 ||
        error.data.code === 401)
    ) {
      uni.removeStorageSync("X-Auth-Token");
      let pages = getCurrentPages();
      let currentPage = pages[pages.length - 1];
      let currentRoute = currentPage.route;

      if (
        currentRoute.indexOf("login/login") > 0 ||
        currentRoute.indexOf("goods/order_confirm/index") > 0 ||
        islogin.indexOf("/user/isPayPass") > 0 ||
        islogin.indexOf("/order/product/check") > 0
      ) {
        console.log("当前路由地址：" + currentRoute);
        return Promise.reject(error.data);
      }
      console.log("拦截2");
      // debugger;
      if (!loginModal) {
        uni.removeStorageSync("userInfo");
        loginModal = true;
        // 弹窗告诉用户去登录
      }

      IsLoginfun();
    } else {
      return Promise.reject(error.data);
    }
  }
);

// 导出配置好的模网络模块
export { http, base_URL, base_URL_Ws };
